feat: init SeedlessOnboardingController via @metamask/wallet - #33413
feat: init SeedlessOnboardingController via @metamask/wallet#33413grvgoel81 wants to merge 8 commits into
Conversation
|
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes. |
PR template — items to address before "Ready for review"Warnings — informational, address before merging:
See docs/readme/ready-for-review.md for the full Definition of Ready for Review. |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
🧪 Flaky unit test detectionRun history flaky detectionHistorical failure rate is a hint, not proof — review each suggestion in context. See the flaky-test-detection skill for the full pattern reference and manual audit workflow. Failures / runs sampled per window:
AI-detected flaky patterns
|
|
…r init Replace preview packages with the released @metamask/wallet@8.0.0 and @metamask/seedless-onboarding-controller@10.1.0 so the mobile wallet-init PR can finalize against stable published packages. Co-authored-by: Cursor <cursoragent@cursor.com>
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection: Performance Test Selection: |
|
❌ E2E Fixture Validation — Failed |
⚡ Performance Test Results
❌ 12 tests failed · 12 tests · 1 device 📱 Devices tested (1)Android: Google Pixel 8 Pro (v14.0) ❌ Failed Tests (12)
@assets-dev-team
@metamask-mobile-platform
@metamask-onboarding-team
Compare all failed scenarios
Branch: |
|
Closing as as changes merged in PR: #33430 |



Description
Migrates SeedlessOnboardingController construction from Mobile’s local Engine init into
@metamask/wallet, matching the shared wallet init pattern (same as TransactionController / Keyring).Why: Core #9533 wires SeedlessOnboardingController into default wallet initialization. Mobile must stop constructing a duplicate controller and instead supply client-specific
instanceOptions.What changed:
getSeedlessOnboardingControllerInstanceOptions()underwallet-init/instance-options/(mobile Encryptorcipher↔dataadapter, JWT handlers viaAuthTokenHandler,web3AuthNetwork,passwordOutdatedCacheTTL)initializeWallet; Engine reads the controller viawallet.getInstance('SeedlessOnboardingController')controllers/seedless-onboarding-controller@metamask/seedless-onboarding-controller(wallet owns construction now)Changelog
CHANGELOG entry: null
Related issues
Refs: https://consensyssoftware.atlassian.net/browse/TO-921
Manual testing steps
Screenshots/Recordings
Before
After
Screen.Recording.2026-07-23.at.1.01.38.PM.mov
Screen.Recording.2026-07-23.at.1.03.55.PM.mov
Pre-merge author checklist
Performance checks (if applicable)
trace()for usage andaddTokenfor an exampleFor performance guidelines and tooling, see the Performance Guide.
Pre-merge reviewer checklist
Note
High Risk
Touches seedless vault encryption, OAuth/JWT refresh, and wallet initialization—security-sensitive onboarding paths—with a breaking preview @metamask/wallet dependency.
Overview
Seedless onboarding is no longer constructed through the Engine’s
seedlessOnboardingControllerInitmessenger path.@metamask/walletnow ownsSeedlessOnboardingControllerlifecycle; mobile supplies client options viagetSeedlessOnboardingControllerInstanceOptions()inwallet-init/instance-options/seedless-onboarding-controller.ts.That builder carries the same mobile-specific wiring that lived in the deleted init: encryptor adapter (
cipher↔data, vault normalization), Web3Auth network, JWT handlers fromAuthTokenHandler, and env validation. Init tests moved to the new module; the old controller init and seedless messenger factory were removed from Engine/messengers registration. Engine resolves the controller withthis.#wallet.getInstance('SeedlessOnboardingController')instead ofmessengerClientsByName.Dependencies: preview builds of
@metamask/walletand@metamask/seedless-onboarding-controllerare pinned inpackage.json/yarn.lock. E2E Metro mocks@metamask/seedless-onboarding-controller(viatests/module-mocking/seedless/package.ts) instead of the former init module path. CODEOWNERS updated for the new wallet-init files.Reviewed by Cursor Bugbot for commit d4c8ff5. Configure here.